读取本地JSON文件并显示

您所在的位置:网站首页 js 获取本地json 读取本地JSON文件并显示

读取本地JSON文件并显示

#读取本地JSON文件并显示| 来源: 网络整理| 查看: 265

发布时间:2012-09-24 16:00:10

原标题:读取本地JSON文件并显示

    程序功能:读取本地JSON文件,并显示到LsitView上,下面详细介绍:

1 [ 2 { 3 "operator":"admin1", 4 "loginDate":"2012-10-20 10:28:10", 5 "logoutDate":"2012-10-20 10:32:10" 6 }, 7 { 8 "operator":"admin2", 9 "loginDate":"2012-10-22 10:20:10",10 "logoutDate":"2012-10-22 10:32:10"11 },12 {13 "operator":"admin3",14 "loginDate":"2012-10-23 10:28:10",15 "logoutDate":"2012-10-23 10:32:10"16 },17 {18 "operator":"admin4",19 "loginDate":"2012-10-20 10:28:10",20 "logoutDate":"2012-10-20 10:32:10"21 }22 ]

      先准备内容如上的"json.txt"文件,放到项目的assets目录下(此处可以是本地SD卡只是读取的方式有些异同)。首先要读出json.txt的内容,要访问assets下的资源,需要使用AssetManager类的open(filename)方法,文中省去(AssetManager assetManager = getAssets();)步骤,简写为Context.getAssets().open(filename)。open方法返回一个输入流,我们便可以通过这个流来得到json字符串。

1 /** 2 * 读取本地文件中JSON字符串 3 * 4 * @param fileName 5 * @return 6 */ 7 private String getJson(String fileName) { 8 9 StringBuilder stringBuilder = new StringBuilder();10 try {11 BufferedReader bf = new BufferedReader(new InputStreamReader(12 getAssets().open(fileName)));13 String line;14 while ((line = bf.readLine()) != null) {15 stringBuilder.append(line);16 }17 } catch (IOException e) {18 e.printStackTrace();19 }20 return stringBuilder.toString();21 }

      获得JSON字符串,我们便可以解析,进而得到对我们有用的数据,Adnroid已经加入了org.json.*,所以我对json的操作也变得简单起来,使用JSONArray array = new JSONArray(str) 就能把我们刚刚得到的JSON串传化为JSONArray,请注意观察我们的josn.txt的内容,其中包括了四组数据结构相同的数据,每一组数据看成一个JSONObject(包含了若干键值对,很像Map),而这些JSONObject便组成了一组JSONArray数组,所以我们只要遍历这个array就可以得到其中的所有JSONObject了,有了JSONObject就可以通过Key获得对应的Value值了。

1 /** 2 * 将JSON字符串转化为Adapter数据 3 * 4 * @param str 5 */ 6 private void setData(String str) { 7 try { 8 JSONArray array = new JSONArray(str); 9 int len = array.length();10 Map map;11 for (int i = 0; i < len; i++) {12 JSONObject object = array.getJSONObject(i);13 map = new HashMap();14 map.put("operator", object.getString("operator"));15 map.put("loginDate", object.getString("loginDate"));16 map.put("logoutDate", object.getString("logoutDate"));17 data.add(map);18 }19 } catch (JSONException e) {20 e.printStackTrace();21 }22 }

         填充完我们的数据集合,就可以放置到Adapter中,并显示到LsitView中,下面给出完整代码,

读取本地JSON文件并显示images/loading.gif' data-original="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" />读取本地JSON文件并显示json. 1 2 6 7 11 12 13 读取本地JSON文件并显示读取本地JSON文件并显示json_item. 1 2 5 6 11 12 18 19 26 27 读取本地JSON文件并显示读取本地JSON文件并显示java代码 1 public class JSONTextActivity extends Activity { 2 3 private ListView listView; 4 private List data; 5 private final static String fileName = "json.txt"; 6 private ProgressDialog pd; 7 8 @Override 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 setContentView(R.layout.json); 12 init(); 13 pd.show(); 14 new DataThread().start(); 15 16 } 17 18 /** 19 * 初始化 20 */ 21 private void init() { 22 listView = (ListView) findViewById(R.id.listView); 23 data = new ArrayList(); 24 pd = new ProgressDialog(this); 25 pd.setMessage("数据加载中……"); 26 27 } 28 29 /** 30 * 加载数据线程 31 */ 32 class DataThread extends Thread { 33 34 @Override 35 public void run() { 36 String jsonStr = getJson(fileName); 37 setData(jsonStr); 38 dataHandler.sendMessage(dataHandler.obtainMessage()); 39 } 40 41 } 42 43 /** 44 * 加载数据线程完成处理Handler 45 */ 46 Handler dataHandler = new Handler() { 47 48 public void handleMessage(android.os.Message msg) { 49 if (pd != null) { 50 pd.dismiss(); 51 } 52 SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), 53 data, R.layout.json_item, new String[] { "operator", 54 "loginDate", "logoutDate" }, new int[] { 55 R.id.operator_tv, R.id.loginDate_tv, 56 R.id.logoutDate_tv }); 57 listView.setAdapter(adapter); 58 } 59 }; 60 61 /** 62 * 读取本地文件中JSON字符串 63 * 64 * @param fileName 65 * @return 66 */ 67 private String getJson(String fileName) { 68 69 StringBuilder stringBuilder = new StringBuilder(); 70 try { 71 BufferedReader bf = new BufferedReader(new InputStreamReader( 72 getAssets().open(fileName))); 73 String line; 74 while ((line = bf.readLine()) != null) { 75 stringBuilder.append(line); 76 } 77 } catch (IOException e) { 78 e.printStackTrace(); 79 } 80 return stringBuilder.toString(); 81 } 82 83 /** 84 * 将JSON字符串转化为Adapter数据 85 * 86 * @param str 87 */ 88 private void setData(String str) { 89 try { 90 JSONArray array = new JSONArray(str); 91 int len = array.length(); 92 Map map; 93 for (int i = 0; i < len; i++) { 94 JSONObject object = array.getJSONObject(i); 95 map = new HashMap(); 96 map.put("operator", object.getString("operator")); 97 map.put("loginDate", object.getString("loginDate")); 98 map.put("logoutDate", object.getString("logoutDate")); 99 data.add(map);100 }101 } catch (JSONException e) {102 e.printStackTrace();103 }104 }105 }

运行效果如下:

        读取本地JSON文件并显示转载请保留本文网址: http://www.shaoqun.com/a/42168.html

上一篇: Mule配置常用节点(转) 下一篇: 原型模式创建型模式(4)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3